A virtual machine is a software implementation of a physical computer that, like an actual physical computer, runs an operating system (sometimes referred to as guest operating system, GOS) and applications. Each virtual machine has access to virtual, or software-based, hardware, including a virtual CPU, memory, hard disk, and network interface card. Software called the hypervisor is installed on the physical hardware in a virtualized datacenter, and acts as a platform for virtual machines.
The hypervisor provides a platform for running virtual machines and allows for the consolidation of the platform's physical computing resources. The hypervisor provides software representations of physical hardware resources dynamically to virtual machines as needed to support operation of the virtual machines. The hypervisor allows virtual machines to operate with a degree of independence from the underlying physical hardware. For example, a virtual machine can be moved from one physical host to another (sometimes referred to a virtual machine migration) or its virtual disks can be moved from one type of storage to another (sometimes referred to as virtual storage migration), without affecting the functioning of the virtual machine.
As virtualization proliferates in datacenters, it has made life simple for the administrators to deploy various applications using virtual machine (VM) templates for creating virtual machines. Today, virtualization software emulates generic storage and network hardware interfaces to the guest operating systems, and seems to meet most of the existing application requirements.
While virtualization continues to gain popularity, several hardware advancements have taken place in the datacenter landscape. Some of the popular advances include high capacity non-volatile memory (NVM), low latency switching fabric, and scale-out object storage architectures. Various web-scale applications have been modified to make use of these advances in hardware. Since conventional virtualization platforms provide legacy hardware interfaces to the guest operating systems, the applications cannot really take advantage of the hardware advancements. Hence, there arises a need to evolve the current virtualization platform to provide these benefits to the next generation of applications.